package com.gxks.lhs.security;

import com.gxks.lhs.filter.JwtTokenFilter;
import org.springframework.security.config.annotation.SecurityConfigurerAdapter;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.DefaultSecurityFilterChain;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;

public class JwtConfigurer extends SecurityConfigurerAdapter<DefaultSecurityFilterChain, HttpSecurity> {

    private JwtTokenProvider jwtTokenProvider;

    public JwtConfigurer(JwtTokenProvider jwtTokenProvider) {
        this.jwtTokenProvider = jwtTokenProvider;
    }

    /**
     * 配置HTTP安全设置，用于保护应用程序的RESTful API。
     * 该方法通过添加自定义的JWT过滤器到安全链中，来实现认证和授权。
     *
     * @param http 用于配置HTTP安全性的对象。
     * @throws Exception 如果在配置过程中发生错误，则抛出异常。
     */
    @Override
    public void configure(HttpSecurity http) throws Exception {
        // 创建JWT过滤器实例，并注入JWT令牌提供者
        JwtTokenFilter customFilter = new JwtTokenFilter(jwtTokenProvider);
        // 在UsernamePasswordAuthenticationFilter之前添加JWT过滤器到安全过滤链中
        http.addFilterBefore(customFilter, UsernamePasswordAuthenticationFilter.class);
    }
}

